Flash memory is non-volatile computer memory that can be electrically erased and reprogrammed. Flash memory is primarily used in memory cards and USB flash drives for general storage and the transfer of data between computers and other digital products.
Flash memory is a specific type of Electrically Erasable Programmable Read-Only Memory (“EEPROM”) that is erased and programmed in large blocks. In early flash memory devices, the entire chip had to be erased at once. Flash memory costs far less than a byte-programmable EEPROM. Therefore, flash memory has become the dominant technology wherever a significant amount of non-volatile, solid state storage is needed. Example applications include PDAs (personal digital assistants), laptop computers, digital audio players, digital cameras and mobile phones. Flash memory has also gained popularity in the game console market, where flash memory is often used instead of EEPROMs or battery-powered Static Random Access Memory (“SRAM”) for game save data.
Flash memory is non-volatile, which means that no power is needed to maintain the information stored in the chip. In addition, flash memory offers fast read access times; although not as fast as volatile Dynamic Random Access Memory (“DRAM”) used for main memory in PCs. Further, flash memory offers better kinetic shock resistance than hard disks. Another feature of flash memory is that when packaged in a “memory card,” flash memory is enormously durable, being able to withstand intense pressure, extremes of temperature, and even immersion in water.
Although technically a type of EEPROM, the term “EEPROM” is generally used to refer specifically to non-flash EEPROM which is erasable in small blocks, typically bytes. Because erase cycles are slow, the large block sizes used in flash memory erasing give it a significant speed advantage over old-style EEPROM when writing large amounts of data.
NAND Flash architecture is one of two flash technologies (the other being NOR) used in memory cards such as the CompactFlash cards. NAND gate flash uses tunnel injection for writing and tunnel release for erasing. NAND flash memory forms the core of the removable USB storage devices known as USB flash drives and most memory card formats available today. It is also used in MP3 players, and provides the image storage for digital cameras. NAND is best suited to flash devices requiring high capacity data storage. NAND flash devices offer storage space up to 512-MB and offers faster erase, write, and read capabilities over NOR architecture.
One limitation of flash memory is that, although flash memory can be read or programmed a byte or a word at a time in a random access fashion, flash memory must be erased a “block” at a time. This generally sets all bits in the block to one (1). Starting with a freshly erased block, any location within that block can be programmed. However, once a bit has been set to zero (0), only by erasing the entire block can it be changed back to one (1). In other words, flash memory offers random-access read and programming operations, but cannot offer arbitrary random-access rewrite or erase operations. In general the entire block is erased and rewritten at once.
Conventional memory management systems for NAND flash devices are used for features like file system or demand loading for code. This makes it very difficult to implement memory management for demand loading for Read Wright (RW) and Zero Initialized data (ZI) with efficient usage of flash memory (hereinafter “flash” or “NAND flash”) and Random-Access Memory (RAM). Conventional embedded systems do not consider swapping in memory management processes. In advanced systems, such as, but not limited to Linux®, static mapping between RAM and flash pages is used. When static mapping is used, the flash size must be the same as a size of the data from the swap area. Maintaining the flash size equal to the data from the swap area results in a reduction of the life cycle for NAND flash blocks.